package com.chinacoal.hr.levelimpl.service;


import com.chinacoal.hr.levelapi.entity.AttendanceAppeal;
import com.chinacoal.hr.levelapi.entity.BizTravel;
import com.chinacoal.hr.levelapi.entity.LeaveRecord;

import java.util.List;
import java.util.Map;


public interface ApprovalService {

    /**
     * 获得待审批的出差申请单
     *
     * @param insCode :
     * @return : com.chinacoal.hr.levelimpl.entity.BizTravel
     * @author : YunTao.Li
     * @date : 2019/12/18 2019/12/18
     */
    public BizTravel getTravelInfoForApproval(String insCode) throws Throwable;

    /**
     * 审批通过出差申请单
     *
     * @param travelId :
     * @return : java.util.Map<java.lang.String,java.lang.String>
     * @author : YunTao.Li
     * @date : 2019/12/18 2019/12/18
     */
    public Map<String, String> travelApproval(String travelId, BizTravel record) throws Throwable;

    /**
     * 驳回出差申请单
     *
     * @param travelId :
     * @return : java.util.Map<java.lang.String,java.lang.String>
     * @author : YunTao.Li
     * @date : 2019/12/18 2019/12/18
     */
    public Map<String, String> travelApprovalDisagree(String travelId, BizTravel record) throws Throwable;

    /**
     * 获得待审批的考勤申诉单
     *
     * @param insCode :
     * @return : com.chinacoal.hr.levelimpl.entity.AttendanceAppeal
     * @author : YunTao.Li
     * @date : 2019/12/18 2019/12/18
     */
    public AttendanceAppeal getAppealForApproval(String insCode) throws Throwable;


    /**
     * 审批通过考勤申诉单
     *
     * @param explainId :
     * @return : java.util.Map<java.lang.String,java.lang.String>
     * @author : YunTao.Li
     * @date : 2019/12/18 2019/12/18
     */
    public Map<String, String> appealApproval(String explainId, AttendanceAppeal attendanceAppeal) throws Throwable;

    /**
     * 驳回考勤申诉单
     *
     * @param explainId :
     * @return : java.util.Map<java.lang.String,java.lang.String>
     * @author : YunTao.Li
     * @date : 2019/12/18 2019/12/18
     */
    public Map<String, String> appealApprovalDisagree(String explainId, AttendanceAppeal attendanceAppeal) throws Throwable;


    /**
     * 获得待审批的请假单
     *
     * @param insCode :
     * @return : com.chinacoal.hr.levelimpl.entity.LeaveRecord
     * @author : YunTao.Li
     * @date : 2019/12/18 2019/12/18
     */
    public LeaveRecord getLeaveInfoFotApproval(String insCode) throws Throwable;

    /**
     * 审批通过请假单
     *
     * @param leaveId :
     * @return : java.util.Map<java.lang.String,java.lang.String>
     * @author : YunTao.Li
     * @date : 2019/12/18 2019/12/18
     */
    public Map<String, String> leaveApproval(String leaveId, LeaveRecord record) throws Throwable;

    /**
     * 驳回请假单
     *
     * @param leaveId :
     * @return : java.util.Map<java.lang.String,java.lang.String>
     * @author : YunTao.Li
     * @date : 2019/12/18 2019/12/18
     */
    public Map<String, String> leaveApprovalDisagree(String leaveId, LeaveRecord record) throws Throwable;

    /**
     * 查询流程实例审批历史
     *
     * @param processInstID :
     * @return : void
     * @author : YunTao.Li
     * @date : 2019/12/19 2019/12/19
     */
    public List getApprovalHistorys(String processInstID) throws Throwable;
}
